Authenticating peer-to-peer connections

ABSTRACT

Systems and methods employing authenticated connections to a central server to establish and authenticate a peer-to-peer connection between peer devices. The invention circumvents the potential vulnerability of clear-text transmission of secrets through a series of encrypted data transfers. A secret key is encrypted and then transmitted from one peer device to another using authenticated connections to the server. The secret key is then used to transmit encrypted data over a peer connection between the peer devices for the purpose of authenticating the peer devices on each end of the connection.

TECHNICAL FIELD

[0001] The present invention relates to the field of peer-to-peercommunications. In particular, this invention relates to authenticatinga connection between peer devices having authenticated connections to acommon server.

BACKGROUND OF THE INVENTION

[0002] With the increased popularity of the Internet and other computernetworks, communication-oriented applications such as instant messagingapplications are now widely employed to exchange messages and other data(e.g., files) between peer devices. Instant messaging services oftenexpose, among other features, mechanisms to detect presence informationabout a designated peer (sometimes referred to as a “buddy”) and toexchange messages with that peer when the peer is online. When a usergets online, the instant messaging application on the client devicetypically connects to an instant messaging server that thenauthenticates the user using a suitable client-server authenticationprotocol. Thereafter, the server typically identifies for the user thoseof the user's buddies who are also online and connected to the server,and may likewise inform the user's buddies that the user is online. Theuser and his or her buddies can then initiate sessions with one anotherfor exchanging messages and other data. The authenticated communicationchannel between each client device (i.e., either the user or a buddy)and the server commonly remains active throughout the duration that theclient is online, until the client chooses to disconnect or shut downthe instant messaging application.

[0003] If all data exchanged between peer devices is routed through theserver, the server typically becomes a limiting factor (e.g., abottleneck) in terms of data throughput, especially when large amountsof data are transferred as in the case of file transfers. Additionally,some peer devices may wish to communicate with one another using alanguage or protocol that the server does not support. Though someexisting systems may include functionality that allows peer devices toestablish direct peer-to-peer connections between the peer devices, suchexisting systems do not provide mechanisms to authenticate thepeer-to-peer connection.

[0004] For these reasons, a system for verifying that peers on oppositeends of a peer-to-peer connection are the same peers that previouslyestablished authenticated or otherwise trusted connections with a servercommon to both peers without requiring additional functionality from thecommon server is desired to address one or more of these and otherdisadvantages.

SUMMARY OF THE INVENTION

[0005] The invention employs authenticated connections between each ofmultiple peer devices and a common server for establishing andauthenticating a peer connection between the peer devices. Software ofthe invention circumvents the potential vulnerability of clear-texttransmission of secrets through a series of encrypted data transfers. Asecret key is encrypted and then transmitted from one peer device toanother using authenticated connections via a common server. The secretkey is then used to transmit encrypted data over a peer connectionbetween peer devices for the purpose of authenticating the peer deviceson each end of the connection.

[0006] With the authenticated peer-to-peer connection of the invention,the server does not limit the throughput of the peer-to-peer connection,and need not understand the language or protocol used for communicationssent through such connection. In addition, the invention softwareexposes mechanisms that permit other types of applications (e.g., videogame applications) to exchange data through the server for the purposeof establishing a peer connection to a peer device and to subsequentlyuse the peer-to-peer connection to exchange application specific datausing application specific protocols. In establishing a peer-to-peerconnection, one peer device opens a communication port (e.g. a TCP/IPport) for a connection to be established therewith by another peerdevice. The invention software provides mechanisms to reducevulnerability created by an unauthorized application program or anotherpeer that might potentially establish a connection on the open portprior to the intended peer. The invention also provides mechanisms toestablish such connections when one of the two peers is behind a proxyserver or firewall such as those proxy servers or firewalls commonlyemployed in a corporate network.

[0007] In accordance with one aspect of the invention, a methodestablishes and authenticates a peer connection between at least twoclient components. The client components each have an authenticatedconnection to a server. The method includes exchanging a shared keybetween the client components via the server and establishing apeer-to-peer connection between the client components. In addition, themethod includes exchanging the shared key between the client componentsvia the established, peer-to-peer connection and authenticating each ofthe client components by verifying that the shared key exchanged via thepeer-to-peer connection corresponds to the shared key exchanged via theserver.

[0008] In accordance with another aspect of the invention, a methodestablishes and authenticates a peer connection between a first deviceand a second device. The first device and the second device haveauthenticated connections to a server. The method includes enabling thefirst device and the second device to exchange a shared key in encryptedform via the authenticated connections, receiving a request from thefirst device for an identifier associated with the second device, andtransmitting the requested identifier to the first device. The firstdevice and the second device establish the peer connection based on theidentifier.

[0009] In accordance with yet another aspect of the invention, one ormore computer-readable media have computer-executable componentsincluding a server component and one or more client components. Each ofthe client components has an authenticated connection to the servercomponent. The server component interacts with each of the clientcomponents via the authenticated connection to establish andauthenticate a peer connection between one or more of the clientcomponents.

[0010] In accordance with yet another aspect of the invention, a methodsecures information between a first device and a second device. Themethod includes establishing authenticated connections to a server fromthe first device and from the second device. The method further includesencrypting, in the first device, a shared key using a public keyassociated with the second device and transmitting the shared key fromthe first device to the second device via the authenticated connectionsto the server. The method further includes decrypting, in the seconddevice, the shared key received from the first device and establishing apeer connection between the first device and the second device. Themethod further includes encrypting, in the second device, the shared keyreceived from the first device using a public key associated with thefirst device and transmitting the shared key from the second device tothe first device via the peer connection. The method also includesdecrypting, in the first device, the shared key received from the seconddevice and confirming, in the first device, that the shared key receivedfrom the second device via the peer connection is the same as the sharedkey transmitted to the second device via the authenticated connectionsto the server to thereby authenticate the second device.

[0011] In accordance with yet another aspect of the invention, a methodsecures information between a first device and a second device. Themethod includes establishing authenticated connections to a server fromthe first device and from the second device. The method further includesencrypting, in the first device, a shared key using a public keyassociated with the second device and transmitting the shared key fromthe first device to the second device via the authenticated connectionsto the common server. The method also includes decrypting, in the seconddevice, the shared key received from the first device and establishing apeer connection between the first device and the second device. Themethod further includes transmitting the shared key from the firstdevice to the second device via the peer connection and decrypting, inthe second device, the shared key received from the first device via thepeer connection. The method confirms, in the second device, that theshared key received from the first device via the peer connection is thesame as the shared key received from the first device via theauthenticated connections to the server to thereby authenticate thefirst device.

[0012] Alternatively, the invention may comprise various other methodsand apparatuses.

[0013] Other features will be in part apparent and in part pointed outhereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

[0014]FIG. 1 is an exemplary embodiment of peer devices communicatingwith a server and each other.

[0015]FIG. 2 is an exemplary block diagram illustrating a series ofcommunications for authenticating a peer connection between the peerdevices illustrated in FIG. 1.

[0016]FIG. 3 is an exemplary block diagram illustrating animplementation of the invention within an instant messaging environment.

[0017]FIG. 4 is a block diagram illustrating one example of a suitablecomputing system environment in which the invention may be implemented.

[0018] Corresponding reference characters indicate corresponding partsthroughout the drawings.

DETAILED DESCRIPTION OF THE INVENTION

[0019] A computer system according to one embodiment of the presentinvention is shown in FIG. 1 and indicated generally by referencecharacter 100. The computer system 100 includes computer devices 102,104 (also referred to herein as peer device A or client A and peerdevice B or client B, respectively) and a central server 106. In oneembodiment, the computer devices 102, 104 are considered peer devicesbecause the devices 102, 104 use the same program or type of program tocommunicate and share data with one another, as further explained below.

[0020] As shown in FIG. 1, the peer devices 102, 104 each have anauthenticated or otherwise trusted connection 112, 114 to the server106. In one embodiment, these connections 112, 114 are trusted in thatthe connections 112, 114 have been authenticated by the server 106 usinga suitable client-server authentication mechanism. For example, server106 may authenticate the devices 102, 104 by accessing an authenticationserver 108 or other security component such as a multi-site userauthentication system. Thus, the peer devices 102, 104 know that theyare connected to the server 106 (rather than some other entity) and,conversely, the server 106 knows that it is connected to the peerdevices 102, 104. It is contemplated by the inventors that there may bea plurality of servers such as server 106 accessing the authenticationserver 108 via authenticated and encrypted connections to authenticatepeer devices.

[0021] In one example, the server 106 is an instant messaging server,and the peer devices 102, 104 each include an instant messaging clientfor communicating with the instant messaging server over theauthenticated connections 112, 114. It should be understood, however,that the teachings of the invention are not limited to instant messagingservices, and that a variety of other types of communication-orientedservers and clients may be employed without departing from the scope ofthe present invention. For example, the servers may be community orfinancial web sites authenticating members via a multi-site userauthentication system. Another example includes gaming applicationswhere the gaming application on each peer machine connects to a centralgaming server. In addition, the server 106 may be a single server or acluster of one or more servers in collaboration with one another.

[0022] A computer-readable medium 118 of the peer device A 102 stores aclient A component 120. Likewise, a computer-readable medium 122 of thepeer device B 104 stores a client B component 124. A computer-readablemedium 126 of the server 106 stores a server component 128. In oneembodiment, the client A component 120, the client B component 124, andthe server component 128 are computer-executable software componentsthat implement the communication and interactions illustrated in FIGS.1-3. The peer device A 102 executes the client A component 120, the peerdevice B 104 executes a client B component 124, and the server 106executes a server component 128. Alternatively, the client A component120, the client B component 124, and the server component 128 arehardware components associated with peer device A 102, peer device B104, and server 106, respectively. One or more computer-readable mediasuch as computer-readable media 118, 122, 126 store computer-executableinstructions for performing the methods illustrated in FIGS. 1-3 anddescribed herein.

[0023] To facilitate authenticating a peer connection 116 between thepeer devices 102, 104, one of the peer devices is configured to transmita shared key (e.g., a secret session key or other key randomly generatedin a cryptographic manner) to the other peer device via theauthenticated connections 112, 114 to the server 106. In one embodiment,the server 106 facilitates or otherwise allows the exchange of thesecret session key in encrypted form between the client A component 120and the client B component 124. That is, the server 106 receives thesecret session key from one of the client components, and transmits thereceived session key to the other client component. The peer connection116 is direct or peer-to-peer in that the peer devices 102, 104communicate directly with one another, or otherwise bypass the server106. The authenticated connections 112, 114 are also referred to asfirst connections, while the peer connection 116 is referred to as asecond connection.

[0024] In one embodiment, communications sent over the authenticatedconnections 112, 114 are transmitted in clear text. Therefore, thesecret session key is encrypted prior to its transmission, for securityreasons. Alternatively, encrypted and authenticated connections 112, 114between the server 106 and the peer devices 102, 104 maybe employed.Additionally, the peer devices 102, 104 are configured for establishingthe peer connection 1 16 therebetween, and for authenticating the peerconnection 116 using the secret session key transmitted from one peerdevice to the other via the authenticated connections 112, 114 to theserver 106. The session key is, for example, a variable key-size streamcipher such as a 40-bit stream cipher and can be used to encrypt andtransmit files or other data.

[0025] The connections 112, 114, 116 and between the authenticationserver 108 and the server 106 in FIG. 1 may be direct connections.Alternatively, the connections 112, 114, 116 may be network connectionsvia network 110 or any other network or combination of networks such asdescribed with reference to FIG. 4. For example, the connections may bewireless connections via a wireless medium. For convenience, the network110 is shown to be same for all connections in FIG. 1. However, it iscontemplated that each of connections 112, 114, and 116 may or may notinclude one or more types of networks, where each of connections 112,114, and 116 are independent of the other connections. Those skilled inthe art will note that the invention system and software is operablewith any implementation of connections 112, 114, 116 and between theauthentication server 108 and the server 106. In one embodiment,connection 110 between the server 108 and the server 106 is anauthenticated and encrypted connection. In addition, while FIG. 2 andFIG. 3 omit an illustration of network 110 for convenience, it iscontemplated by the inventors that network 110 may or may not beimplemented for the connections in FIGS. 1-3 in various embodiments ofthe invention. Further, in another embodiment, the client components120, 124 illustrated in FIG. 1 execute on the same computer or peerdevice and, thus, the peer devices 102, 104 may be considered peerapplication programs. In yet another embodiment, the client components120, 124 and the server component 128 execute on the same computingdevice.

[0026] One exemplary method for establishing and authenticating the peerconnection 116 between the peer devices 102, 104 will now be describedwith reference to FIG. 2. In this embodiment, each peer device 102, 104has a unique public/private key pair associated therewith. For example,the unique public/private key pair may include 512 bit keys withRivest-Shamir-Adleman (RSA) encryption. Initially, peer device A 102transmits its public key to peer device B 104 (in clear text) via theauthenticated connections 112, 114 to the server 106 (assuming peerdevice B does not already possess peer device A's public key) along witha request to establish a direct peer-to-peer connection. This isindicated by arrows 202, 204 in FIG. 2. Peer device B 104, uponreceiving such a request to establish a peer-to-peer connection, mayoptionally display a user interface for the user of peer device B 104 toaccept the request. If the request is accepted (e.g., automatically orthrough user acceptance), peer device B 104 uses peer device A's publickey to encrypt a secret session key. In one embodiment, the secretsession key is generated randomly by peer device B 104 usingcryptographic algorithms and is generated uniquely for each request thatis received for a peer-to-peer connection. Peer device B 104 thentransmits the encrypted session key to peer device A 102, again via theauthenticated connections 112, 114 to the server 106. This is indicatedby arrows 206, 208 in FIG. 2. In addition to the encrypted session key,peer device B 104 also transmits its own public key to peer device A 102via the authenticated connections 112, 114 (assuming peer device A 102does not already possess peer device B's public key), as indicated inFIG. 2. By sending such an encrypted session key along with its ownpublic key, peer device B 104 indicates that the user of peer device B104 has accepted the request from peer device A 102 to establish adirect peer-to-peer connection.

[0027] Peer device A 102 uses its private key to decrypt the secretsession key received from peer device B 104 via the authenticatedconnections 112, 114. Peer device A 102 also establishes the peerconnection 116 to peer device B 104 by connecting to one of peer deviceB's communication ports. In one embodiment, peer device A 102 obtainsappropriate address information for peer device B 104, (e.g., anInternet Protocol address) from server 106 to establish the peerconnection 116. In particular, server 106 receives a request from clientA component 120 for an identifier associated with client B component124. The server 106 transmits the requested identifier to client Acomponent 120. The client A component 120 of peer device A 102 and theclient B component 124 of peer device B 104 establish the peerconnection based on the identifier.

[0028] In one embodiment, peer device B 104 randomly and dynamicallyallocates a communication port (e.g., a TCP/IP port) for receiving thepeer connection 116, and provides appropriate communication portinformation to peer device A 102 along with the encrypted session keyand peer device B's public key. Because establishing the peer connection116 requires peer device B 104 to open a communication port, there is arisk that a rogue application or other unauthorized or unintendedapplication will attempt to connect to the open port prior to peerdevice A 102, or attempt to swamp peer device B 104 with numerousincoming connections. For this reason, peer device B 104 allocates acommunication port for the peer connection 116 randomly and dynamically.Rather than holding the port open at all times, it is opened only when apeer device is expected to connect thereto. For example, a port isopened in response to receiving an incoming request to establish apeer-to-peer connection from peer device A 102 via the authenticatedconnections 112, 114 to the server 106 and the request is accepted bythe user of peer device B 104. If a request to open peer connection 116is not received within a specific timeout period, the port is closed. Inanother embodiment, the port may be closed if it is determined ordetected that rogue applications are attempting to connect to the port.Rogue applications can be detected if multiple connections are attemptedand subsequent data exchanges over those attempted connections do notfollow the authentication protocol described herein or if authenticationfails. It is contemplated that a plurality of peer-to-peer connectionsmay be supported via a single, opened communication port. In such anembodiment, the shared key acts as an identifier to identify a specificpeer-to-peer connection.

[0029] In the particular embodiment under discussion, peer device A 102encrypts the session key using peer device B's public key, and encryptsa unique message using the session key. The unique message can be anycryptographic data, such as 512 bits of randomly generated data. Peerdevice A 102 then transmits the encrypted session key and message topeer device B 104 via the peer connection 116, as indicated by arrow 210in FIG. 2. Peer device B 104 uses its private key to decrypt the sessionkey received from peer device A 102 via the peer connection 116. Peerdevice B 104 compares the session key received from peer device A 102via the peer connection 116 with the session key initially transmittedto peer device A 102 via the authenticated connections 112, 114 inresponse to the request from peer device A 102 to establish a directpeer-to-peer connection. By confirming that the session key receivedfrom peer device A 102 via the peer connection 116 is the same as thesession key transmitted to peer device A 102 via the authenticatedconnections 112, 114 to the server 106, peer device B 104 verifies(i.e., authenticates) peer device A's identity.

[0030] Note that once the peer connection 116 is established, peerdevice B 104 expects to receive specific data (e.g., the encryptedsession key and a 512 bit message) from the connecting entity. If thisdata is not received within a specific timeout period or if the datareceived is other than what was expected, the peer connection 116 isdropped by peer device B 104.

[0031] Using the secret session key, peer device B 104 also decrypts themessage received from peer device A 102 via the peer connection 116, andthen transmits the decrypted message to peer device A 102 (in clear textor otherwise unencrypted) via the peer connection 116, as indicated byarrow 212 in FIG. 2. Peer device A 102 compares the decrypted messagewith the unencrypted message later encrypted and transmitted to peerdevice B 104. By confirming that the decrypted message received frompeer device B 104 via the peer connection 116 is the same as the messagepreviously transmitted to peer device B 104 in encrypted form, peerdevice A 102 verifies that peer device B 104 possesses the secretsession key, and therefore verifies (i.e., authenticates) peer deviceB's identity. Note that had the peer device A 102 not received thedecrypted message from peer device B 104 within a specific timeoutinterval or had the data received from peer device B 104 been somethingother than the decrypted message, peer device A 102 would have droppedthe connection 116 considering it to be an incorrect or rogueconnection. Having thus authenticated the devices on both ends of thepeer connection 116, the peer devices 102, 104 may proceed to exchangemessages, files, or other data directly with one another via the peerconnection 116. If desired, such data transfers can be encrypted usingthe shared secret session key, the public/private key pairs, or anyother suitable encryption mechanism.

[0032] It is contemplated by the inventors that peer device A 102 andpeer device B 104 are interchangeable in the exemplary authenticationscenario described above. That is, the exchanges (i.e., transmitting andreceiving) of the session key and message may originate with either ofpeer device A 102 or peer device B 104.

[0033] In the embodiment of FIG. 2, peer device B 104 is configured togenerate the secret session key upon receiving peer device A's publickey via the authenticated connections 112, 114. A unique session key isgenerated for each peer-to-peer connection 116, not only for securitypurposes, but also for enabling peer device B 104 to distinguishincoming connections from multiple peer devices by reference to theirassociated (and unique) session keys. In other words, peer device B 104maintains the context of which session key was handed out for whichpeer. As a result, when an incoming peer connection is received by peerdevice B 104, it uses the session key to determine which peerestablished the peer connection. In this manner, multiple incoming peerconnections can be received on the same communication port.

[0034] Those skilled in the art recognize that if a network addresstranslator (NAT) or a firewall separates the peer devices 102, 104, thenpeer device B 104 may not be able to accept incoming connections fromother peers in a computer network such as the Internet. This is becausethe local address of peer device B 104 behind the NAT/firewall may notbe visible to or accessible by other peers (assuming the requiredcommunication port cannot be exposed programmatically in theNAT/firewall) One method for addressing this situation will now bedescribed with reference to FIG. 2. Peer device A 102 initiallytransmits its public key to peer device B 104 via the authenticatedconnections 112, 114 to the server 106 (as indicated by arrows 202,204), and peer device B 104 responds by providing an encrypted sessionkey and its own public key also via the authenticated connections 112,114 (as indicated by arrows 206, 208), in the same manner that wasdescribed above. However, when peer device A 102 attempts to establish apeer connection such as peer connection 116 on a specified communicationport of peer device B 104, peer device A 102 is unable to do so due tothe NAT/firewall (not shown). Thus, peer device B 104 times out after apreset time period waiting for an incoming connection from peer device A102. Recognizing that it may be unable to receive an incoming connectionfrom peer device A 102 due to a NAT/firewall, peer device B 104initiates an attempt to connect to a communication port of peer device A102. In one embodiment, peer device B 104 obtains appropriate addressinformation for peer device A 102 from the server 106 to establish thepeer connection 116. Contemporaneously, peer device A 102 times outtrying to connect to peer device B 104, and assumes this may be due to aNAT/firewall. Thus, peer device A 102 opens a communication port (e.g.,the same communication port dynamically allocated by peer device B 104)and waits for peer device B's incoming connection.

[0035] Once peer device B 104 establishes the peer connection such aspeer connection 116 to peer device A 102, the authentication processdescribed above continues, but in reverse. Thus, peer device B 104encrypts the secret session key using peer device A's public key, andalso encrypts a unique message using the session key. The encryptedsession key and message are then transmitted from peer device B 104 topeer device A 102 via the peer connection 116, as indicated by arrow 214in FIG. 2. Peer device A 102 uses its private key to decrypt the sessionkey received from peer device B 104 via the peer connection 116. Byconfirming that the session key received from peer device B 104 via thepeer connection 116 is the same as the session key received from peerdevice B 104 via the authenticated connections 112, 114 to the server106, peer device A 102 verifies (i.e., authenticates) peer device B'sidentity.

[0036] Using the secret session key, peer device A 102 also decrypts themessage received from peer device B 104 via the peer connection 116, andthen transmits the decrypted message to peer device B 104 (in clear textor otherwise unencrypted) via the peer connection 116, as indicated byarrow 216 in FIG. 2. By confirming that the decrypted message receivedfrom peer device A 102 via the peer connection 116 is the same as themessage previously transmitted to peer device A 102 in encrypted form,peer device B 104 verifies that peer device A 102 possesses the secretsession key, and therefore verifies (i.e., authenticates) peer deviceA's identity. Note that in this alternative embodiment, only peer deviceA's public/private key pair is used for authenticating the peerconnection 116.

[0037]FIG. 3 illustrates one implementation of the present invention inan instant messaging context. As shown in FIG. 3, two peer devices 302,304 each include an instant messaging client such as instant messagingclient A 306 and instant messaging client B 307 for establishingauthenticated connections 308, 310 to an instant messaging server 312,respectively. Each of the peer devices 302, 304 also includes one ormore communicative application programs such as communicativeapplication program A 314 and communicative application program B 315(e.g., a communicative video game application or a file sharingprogram). The communicative application programs 314, 315 interface withthe instant messaging clients 306, 307 that in turn interface with theinstant messaging server 312 to establish and authenticate a peerconnection 316 between the peer devices 302, 304 in a manner describedabove with reference to FIG. 1 and FIG. 2. For example, when thecommunicative application program 314 is installed, it registers itselfwith the instant messaging client 306 in the same device as a validapplication (e.g., using an API provided by the instant messagingclient). In one embodiment, the communicative application programs 314,315 also generate the public/private key pair required by each peerdevice 302, 304 in the authentication process.

[0038] At startup, each communicative application program 314, 315communicates with the instant messaging server 312 through the instantmessaging client 306, 307 in such a manner as to authenticate itselfwith the instant messaging server 312 as an application permitted to usethe instant messaging client API for communicating with peer devices.Once authenticated, the communicative application program 314 in peerdevice 302 can establish a communication channel with the communicativeapplication program 315 in peer device 304 (e.g., by sending a sessioninvitation), or vice versa, via the authenticated connections 308, 310to the instant messaging server 312. The communicative applicationprograms 314, 315 proceed to exchange data through the authenticatedconnections 308, 310, and through the peer connection 316, in the mannerdescribed above with reference to FIG. 1 and FIG. 2 to authenticate thepeer devices 302, 304 on each end of the peer connection 316. In thismanner, the communicative application programs 314, 315 utilize anexisting instant messaging infrastructure for establishing andauthenticating the peer connection 316 between the peer devices 302,304.

[0039]FIG. 4 shows one example of a general purpose computing device inthe form of a computer 130. In one embodiment of the invention, acomputer such as the computer 130 is suitable for use in the otherfigures illustrated and described herein. Computer 130 has one or moreprocessors or processing units 132 and a system memory 134. In theillustrated embodiment, a system bus 136 couples various systemcomponents including the system memory 134 to the processors 132. Thebus 136 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus also known as Mezzanine bus.

[0040] The computer 130 typically has at least some form of computerreadable media. Computer readable media, which include both volatile andnonvolatile media, removable and non-removable media, may be anyavailable medium that can be accessed by computer 130. By way of exampleand not limitation, computer readable media comprise computer storagemedia and communication media. Computer storage media include volatileand nonvolatile, removable and non-removable media implemented in anymethod or technology for storage of information such as computerreadable instructions, data structures, program modules or other data.For example, computer storage media include RAM, ROM, EEPROM, flashmemory or other memory technology, CD-ROM, digital versatile disks (DVD)or other optical disk storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othermedium that can be used to store the desired information and that canaccessed by computer 130. Communication media typically embody computerreadable instructions, data structures, program modules, or other datain a modulated data signal such as a carrier wave or other transportmechanism and include any information delivery media. Those skilled inthe art are familiar with the modulated data signal, which has one ormore of its characteristics set or changed in such a manner as to encodeinformation in the signal. Wired media, such as a wired network ordirect-wired connection, and wireless media, such as acoustic, RF,infrared, and other wireless media, are examples of communication media.Combinations of the any of the above are also included within the scopeof computer readable media.

[0041] The system memory 134 includes computer storage media in the formof removable and/or non-removable, volatile and/or nonvolatile memory.In the illustrated embodiment, system memory 134 includes read onlymemory (ROM) 138 and random access memory (RAM) 140. A basicinput/output system 142 (BIOS), containing the basic routines that helpto transfer information between elements within computer 130, such asduring start-up, is typically stored in ROM 138. RAM 140 typicallycontains data and/or program modules that are immediately accessible toand/or presently being operated on by processing unit 132. By way ofexample, and not limitation, FIG. 4 illustrates operating system 144,application programs 146, other program modules 148, and program data150.

[0042] The computer 130 may also include other removable/non-removable,volatile/nonvolatile computer storage media. For example, FIG. 4illustrates a hard disk drive 154 that reads from or writes tonon-removable, nonvolatile magnetic media. FIG. 4 also shows a magneticdisk drive 156 that reads from or writes to a removable, nonvolatilemagnetic disk 158, and an optical disk drive 160 that reads from orwrites to a removable, nonvolatile optical disk 162 such as a CD-ROM orother optical media. Other removable/non-removable, volatile/nonvolatilecomputer storage media that can be used in the exemplary operatingenvironment include, but are not limited to, magnetic tape cassettes,flash memory cards, digital versatile disks, digital video tape, solidstate RAM, solid state ROM, and the like. The hard disk drive 144, andmagnetic disk drive 156 and optical disk drive 160 are typicallyconnected to the system bus 136 by a nonvolatile memory interface, suchas interface 166.

[0043] The drives or other mass storage devices and their associatedcomputer storage media discussed above and illustrated in FIG. 4,provide storage of computer readable instructions, data structures,program modules and other data for the computer 130. In FIG. 4, forexample, hard disk drive 154 is illustrated as storing operating system170, application programs 172, other program modules 174, and programdata 176. Note that these components can either be the same as ordifferent from operating system 144, application programs 146, otherprogram modules 148, and program data 150. Operating system 170,application programs 172, other program modules 174, and program data176 are given different numbers here to illustrate that, at a minimum,they are different copies.

[0044] A user may enter commands and information into computer 130through input devices or user interface selection devices such as akeyboard 180 and a pointing device 182 (e.g., a mouse, trackball, pen,or touch pad). Other input devices (not shown) may include a microphone,joystick, game pad, satellite dish, scanner, or the like. These andother input devices are connected to processing unit 132 through a userinput interface 184 that is coupled to system bus 136, but may beconnected by other interface and bus structures, such as a parallelport, game port, or a Universal Serial Bus (USB). A monitor 188 or othertype of display device is also connected to system bus 136 via aninterface, such as a video interface 190. In addition to the monitor188, computers often include other peripheral output devices (not shown)such as a printer and speakers, which may be connected through an outputperipheral interface (not shown).

[0045] The computer 130 may operate in a networked environment usinglogical connections to one or more remote computers, such as a remotecomputer 194. The remote computer 194 may be a personal computer, aserver, a router, a network PC, a peer device or other common networknode, and typically includes many or all of the elements described aboverelative to computer 130. The logical connections depicted in FIG. 4include a local area network (LAN) 196 and a wide area network (WAN)198, but may also include other networks. Such networking environmentsare commonplace in offices, enterprise-wide computer networks,intranets, and global computer networks (e.g., the Internet).

[0046] When used in a local area networking environment, computer 130 isconnected to the LAN 196 through a network interface or adapter 186.When used in a wide area networking environment, computer 130 typicallyincludes a modem 178 or other means for establishing communications overthe WAN 198, such as the Internet. The modem 178, which may be internalor external, is connected to system bus 136 via the user input interface194, or other appropriate mechanism. In a networked environment, programmodules depicted relative to computer 130, or portions thereof, may bestored in a remote memory storage device (not shown). By way of example,and not limitation, FIG. 4 illustrates remote application programs 192as residing on the memory device. It will be appreciated that thenetwork connections shown are exemplary and other means of establishinga communications link between the computers may be used.

[0047] Generally, the data processors of computer 130 are programmed bymeans of instructions stored at different times in the variouscomputer-readable storage media of the computer. Programs and operatingsystems are typically distributed, for example, on floppy disks orCD-ROMs. From there, they are installed or loaded into the secondarymemory of a computer. At execution, they are loaded at least partiallyinto the computer's primary electronic memory. The invention describedherein includes these and other various types of computer-readablestorage media when such media contain instructions or programs forimplementing the steps described below in conjunction with amicroprocessor or other data processor. The invention also includes thecomputer itself when programmed according to the methods and techniquesdescribed herein.

[0048] For purposes of illustration, programs and other executableprogram components, such as the operating system, are illustrated hereinas discrete blocks. It is recognized, however, that such programs andcomponents reside at various times in different storage components ofthe computer, and are executed by the data processor(s) of the computer.

[0049] Although described in connection with an exemplary computingsystem environment, including computer 130, the invention is operationalwith numerous other general purpose or special purpose computing systemenvironments or configurations. The computing system environment is notintended to suggest any limitation as to the scope of use orfunctionality of the invention. Moreover, the computing systemenvironment should not be interpreted as having any dependency orrequirement relating to any one or combination of components illustratedin the exemplary operating environment. Examples of well known computingsystems, environments, and/or configurations that may be suitable foruse with the invention include, but are not limited to, personalcomputers, server computers, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like.

[0050] The invention may be described in the general context ofcomputer-executable instructions, such as program modules, executed byone or more computers or other devices. Generally, program modulesinclude, but are not limited to, routines, programs, objects,components, and data structures that perform particular tasks orimplement particular abstract data types. The invention may also bepracticed in distributed computing environments where tasks areperformed by remote processing devices that are linked through acommunications network. In a distributed computing environment, programmodules may be located in both local and remote computer storage mediaincluding memory storage devices.

[0051] In operation, computer 130 executes computer-executableinstructions such as those illustrated in FIGS. 1-3 to perform a methodof securing information between a first device and a second devicecomprising:

[0052] establishing authenticated connections to a server from the firstdevice and from the second device;

[0053] encrypting, in the first device, a shared secret session keyusing a public key associated with the second device;

[0054] transmitting the shared secret session key as encrypted using thepublic key associated with the second device from the first device tothe second device via the authenticated connections to the server;

[0055] decrypting, in the second device, the shared secret session keyreceived from the first device using the private key of the seconddevice;

[0056] establishing a peer connection between the first device and thesecond device;

[0057] encrypting, in the second device, the shared secret session keyreceived from the first device using a public key associated with thefirst device;

[0058] transmitting the shared secret session key as encrypted using thepublic key associated with the first device from the second device tothe first device via the peer connection;

[0059] decrypting, in the first device, the shared secret session keyreceived from the second device using the private key of the firstdevice; and

[0060] confirming, in the first device, that the shared secret sessionkey received from the second device via the peer connection is the sameas the shared secret session key transmitted to the second device viathe authenticated connections to the server to thereby authenticate thesecond device.

[0061] When introducing elements of the present invention or theembodiment(s) thereof, the articles “a,” “an,” “the,” and “said” areintended to mean that there are one or more of the elements. The terms“comprising,” “including,” and “having” are intended to be inclusive andmean that there may be additional elements other than the listedelements.

[0062] In view of the above, it will be seen that the several objects ofthe invention are achieved and other advantageous results attained.

[0063] As various changes could be made in the above constructions,products, and methods without departing from the scope of the invention,it is intended that all matter contained in the above description andshown in the accompanying drawings shall be interpreted as illustrativeand not in a limiting sense.

What is claimed is:
 1. A method of establishing and authenticating apeer-to-peer connection between at least two client components, saidclient components each having an authenticated connection to a server,said method comprising: exchanging a shared key between the clientcomponents via the server; establishing a peer-to-peer connectionbetween the client components; exchanging the shared key between theclient components via the established, peer-to-peer connection; andauthenticating each of the client components by verifying that theshared key exchanged via the peer-to-peer connection corresponds to theshared key exchanged via the server.
 2. The method of claim 1, whereinexchanging a shared key between the client components via the servercomprises exchanging a shared key in encrypted form between the clientcomponents via the server.
 3. The method of claim 1, wherein exchanginga shared key between the client components via the server comprisesexchanging a shared key between the client components via theauthenticated connection with the server.
 4. The method of claim 1,wherein exchanging the shared key between the client components via theestablished, peer-to-peer connection comprises exchanging the shared keyin encrypted form between the client components via the established,peer-to-peer connection.
 5. The method of claim 1, wherein the sharedkey comprises a randomly-generated, single-use session key.
 6. Themethod of claim 1, further comprising: encrypting a first message usingthe shared key; transmitting the encrypted first message to one of theclient components via said peer-to-peer connection; receiving a secondmessage in decrypted form from said one of the client components; andauthenticating said one of the client components by comparing thereceived second message to the first message.
 7. The method of claim 1,further comprising: receiving a message in encrypted form from one ofthe client components via said peer-to-peer connection; decrypting thereceived message using the shared key; and transmitting the decryptedmessage to said one of the client components.
 8. The method of claim 1,wherein said establishing comprises: transmitting a request for anidentifier associated with said one of the client components to theserver; and receiving the requested identifier from the server; andestablishing the peer-to-peer connection with said one of the clientcomponents using the received identifier.
 9. The method of claim 8,wherein said identifier comprises a network address.
 10. The method ofclaim 9, wherein said identifier further comprises a communication port.11. The method of claim 1, wherein said establishing comprises:receiving, from one of said client components via the authenticatedconnection to the server, a request to establish a peer-to-peerconnection; and opening a communication port in response to the receivedrequest.
 12. The method of claim 11, wherein opening comprises randomlydetermining the communication port to open.
 13. The method of claim 11,further comprising closing the opened communication port if one or morerogue applications are attempting to connect on the opened communicationport.
 14. The method of claim 11, wherein said establishing comprisesestablishing a plurality of peer-to-peer connections between a pluralityof client components via the opened communication port, and wherein saidshared key identifies each of the established connections.
 15. Themethod of claim 1, wherein said establishing comprises: attempting toconnect with one of the client components; and if said attempting fails,waiting for a preset time period for said one of the client componentsto initiate establishing the peer-to-peer connection.
 16. The method ofclaim 1, wherein said establishing comprises storing the shared key inmemory for a preset time period.
 17. The method of claim 1, furthercomprising randomly generating the shared key in a cryptographic mannerin response to a request to establish a peer-to-peer connection betweenthe client components.
 18. The method of claim 1, wherein the shared keyis a shared secret session key.
 19. The method of claim 1, furthercomprising: encrypting data with the shared key; and transferring theencrypted data between the client components via the authenticated,peer-to-peer connection.
 20. The method of claim 1, wherein one or morecomputer-readable media have computer-executable instructions forperforming the method of claim
 1. 21. A method of establishing andauthenticating a peer connection between a first device and a seconddevice, the first device and the second device having authenticatedconnections to a server, said method comprising: enabling the firstdevice and the second device to exchange a shared key in encrypted formvia the authenticated connections; receiving a request from the firstdevice for an identifier associated with the second device; andtransmitting the requested identifier to the first device, wherein thefirst device and the second device establish the peer connection basedon the identifier.
 22. The method of claim 21, wherein said receivingcomprises receiving a request from the first device for a networkidentifier associated with the second device.
 23. The method of claim21, wherein said enabling comprises: receiving the shared key inencrypted form from the first device via the authenticated connections;and transmitting the received shared key in encrypted form to the seconddevice via the authenticated connections.
 24. The method of claim 21,wherein said enabling comprises: receiving the shared key in encryptedform from the second device via the authenticated connections; andtransmitting the received shared key in encrypted form to the firstdevice via the authenticated connections.
 25. The method of claim 21,wherein the shared key comprises a randomly-generated, single-usecryptographic session key.
 26. The method of claim 21, wherein theshared key is randomly generated in a cryptographic manner in responseto a request to establish a peer-to-peer connection between the firstdevice and the second device.
 27. The method of claim 21, wherein theserver is an instant messaging server, and the first device and thesecond device are instant messaging clients.
 28. The method of claim 21,wherein one or more computer-readable media have computer-executableinstructions for performing the method of claim
 21. 29. One or morecomputer-readable media having computer-executable componentscomprising: a server component; and one or more client components,wherein each of the client components has a authenticated connection tothe server component, and wherein the server component interacts witheach of the client components via the authenticated connection toestablish and authenticate a peer connection between one or more of theclient components.
 30. The computer-readable media of claim 29, whereinthe server component and the client components implement instantmessaging.
 31. The computer-readable media of claim 29, furthercomprising at least one communicative application program associatedwith a first one of the client components, said communicativeapplication program configured to interface with said first one of theclient components for transmitting a shared key in encrypted formbetween said first one of the client components and a second one of theclient components via said authenticated connection to the servercomponent, and said communicative application program configured toestablish and authenticate the peer connection between the first one ofthe client components and the second one of the client components usingsaid shared key.
 32. The computer-readable media of claim 31, whereinthe shared key comprises a randomly-generated, single-use session key.33. The computer-readable media of claim 29, wherein the shared key israndomly generated in a cryptographic manner in response to a request toestablish a peer-to-peer connection between the first device and thesecond device.
 34. The computer-readable media of claim 29, wherein saidserver component is one of a plurality of server components, and furthercomprising a security component connected to the plurality of servercomponents via one or more authenticated and encrypted connections forauthenticating the client components.
 35. A method of securinginformation between a first device and a second device, the methodcomprising: establishing authenticated connections to a server from thefirst device and from the second device; encrypting, in the firstdevice, a shared key using a public key associated with the seconddevice; transmitting the shared key as encrypted using the public keyassociated with the second device from the first device to the seconddevice via said authenticated connections to the server; decrypting, inthe second device, the shared key received from the first device;establishing a peer connection between the first device and the seconddevice; encrypting, in the second device, the shared key received fromthe first device using a public key associated with the first device;transmitting the shared key as encrypted using the public key associatedwith the first device from the second device to the first device viasaid peer connection; decrypting, in the first device, the shared keyreceived from the second device; and confirming, in the first device,that the shared key received from the second device via said peerconnection is the same as the shared key transmitted to the seconddevice via said authenticated connections to the server to therebyauthenticate the second device.
 36. The method of claim 35 furthercomprising: encrypting, in the second device, a first message using theshared key; transmitting the encrypted first message from the seconddevice to the first device via said peer connection; decrypting, in thefirst device, the encrypted, first message received from the seconddevice using the shared key; transmitting the decrypted message from thefirst device to the second device; and authenticating the first deviceby comparing, in the second device, the decrypted message received fromthe first device with the first message.
 37. The method of claim 35further comprising transmitting the public key associated with thesecond device from the second device to the first device via saidauthenticated connections to the server.
 38. The method of claim 35further comprising transmitting the public key associated with the firstdevice from the first device to the second device via said authenticatedconnections to the server.
 39. The method of claim 35 further comprisinggenerating the shared key in the first device.
 40. The method of claim39 wherein generating comprises generating a shared key unique to saidpeer connection.
 41. The method of claim 39, wherein generatingcomprises randomly generating the shared key in a cryptographic mannerin response to a request to establish a peer-to-peer connection betweenthe first device and the second device.
 42. The method of claim 35wherein establishing a peer connection includes transmittingcommunication port information from the first device to the seconddevice, and using said communication port information in the seconddevice to establish the peer connection with the first device.
 43. Themethod of claim 35, wherein the shared key comprises arandomly-generated, single-use cryptographic session key.
 44. The methodof claim 35, wherein the server is an instant messaging server, and thefirst device and the second device are instant messaging clients. 45.The method of claim 35, wherein one or more computer-readable media havecomputer-executable instructions for performing the method of claim 35.46. A method of securing information between a first device and a seconddevice, the method comprising: establishing authenticated connections toa server from the first device and from the second device; encrypting,in the first device, a shared key using a public key associated with thesecond device; transmitting the shared key as encrypted using the publickey associated with the second device from the first device to thesecond device via said authenticated connections to the common server;decrypting, in the second device, the shared key received from the firstdevice; establishing a peer connection between the first device and thesecond device; transmitting the shared key as encrypted using the publickey associated with the second device from the first device to thesecond device via said peer connection; decrypting, in the seconddevice, the shared key received from the first device via said peerconnection; and confirming, in the second device, that the shared keyreceived from the first device via said peer connection is the same asthe shared key received from the first device via said authenticatedconnections to the server to thereby authenticate the first device. 47.The method of claim 46 further comprising: encrypting, in the firstdevice, a first message using the shared key; transmitting theencrypted, first message from the first device to the second device viasaid peer connection; decrypting, in the second device, the encrypted,first message received from the first device using the shared key;transmitting the decrypted message from the second device to the firstdevice; and authenticating the second device by comparing, in the firstdevice, the decrypted message received from the second device with thefirst message.
 48. The method of claim 46 further comprisingtransmitting the public key associated with the second device from thesecond device to the first device via said authenticated connections tothe server.
 49. The method of claim 46 further comprising generating theshared key in the first device.
 50. The method of claim 49 whereingenerating comprises generating a shared key unique to said peerconnection.
 51. The method of claim 49, wherein generating comprisesrandomly generating the shared key in a cryptographic manner in responseto a request to establish a peer-to-peer connection between the firstdevice and the second device.
 52. The method of claim 46 whereinestablishing a peer connection includes transmitting communication portinformation from the first device to the second device, and using saidcommunication port information in the second device to establish thepeer connection with the first device.
 53. The method of claim 46,wherein the shared key comprises a randomly-generated, single-usecryptographic session key.
 54. The method of claim 46, wherein theserver is an instant messaging server, and the first device and thesecond device are instant messaging clients.
 55. The method of claim 46,wherein one or more computer-readable media have computer-executableinstructions for performing the method of claim 46.